Lua | 您所在的位置:网站首页 › unity lua框架 › Lua |
我在Lua文档中发现了一段奇怪的代码: function trim8(s) local i1,i2 = find(s,'^%s*') if i2 >= i1 then s = sub(s,i2+1) end local i1,i2 = find(s,'%s*$') if i2 >= i1 then s = sub(s,1,i1-1) end return s end为什么local再次使用i1和i2?它们是否已在局部变量中声明?local每次要分配关键字时,是否必须重复关键字? 1> hjpotter92..: 不,没有必要local一遍又一遍地使用.变量i1和i2将local在该函数的范围,因为第一线本身. 虽然不应该这样做,但一遍又一遍地定义相同的变量并没有错.它只会将堆栈中的新位置分配给较新的位置,并遮挡较旧的位置. 以下是一个简单函数的指令输出: function t() local i = 2 local i = 3 end t() function和更新的第二只 注意第二条指令的区别 除此之外该功能效率很低您可以改为使用以下内容 堆栈位置局部变量不受垃圾回收的影响存储在阴影局部变量中的值仍被视为可访问: 从技术上讲在第二个声明中使用与否并不相同使用秒将声明另一个变量 但是在您的示例代码中它们基本相同检查这些更简单的代码 和 使用输出以下结果 和 |
CopyRight 2018-2019 实验室设备网 版权所有 |